<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="util.*"%>
<%@page import="entidades.*"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Date"%>
<%@page import="java.util.LinkedList"%>
<%@page import="java.text.SimpleDateFormat"%>

<html>
<head>

<%@ include file="jspf/head.jspf" %>

<%
int id = Util.parseInt(request.getParameter("id"));
CicloNewlong ciclo = (id > 0)? new CicloNewlong(id) : null;

try{
	String accion = (request.getParameter("accion") != null)? request.getParameter("accion") : "";
	
	if(accion.compareTo("guardar") == 0)
		{
		if(id > 0)
			{
			ciclo.setFechaHoraInicio(request.getParameter("fecha_inicio"));
			ciclo.setFechaHoraFin(request.getParameter("fecha_fin"));			
			ciclo.setBloqueado(request.getParameter("bloqueado") != null);
			ciclo.setPlanificado(request.getParameter("planificado") != null);
			ciclo.guardar();
		
			// Cambio el orden de las etapas.
			String idsEtapas = request.getParameter("etapas");
			if(idsEtapas != null && idsEtapas.length() > 0)
				{
				String etapas[] = idsEtapas.split(",");
				for(int i=0,n=etapas.length; i<n; i++)
					{
					String formato = etapas[i].split(":")[0];
					int turno = Util.parseInt(etapas[i].split(":")[1]) + 1;
					EtapaNewlong.cambiarOrden(ciclo.getId(), formato, turno, false);
					}
				}

			// Cambio el orden de las órdenes.
			String ids = request.getParameter("ids");
			if(ids != null && ids.length() > 0)
				{
				String ordenes[] = ids.split(",");
				for(int i=0,n=ordenes.length; i<n; i++)
					{
					int ordenId, turno = 0;
					if(ordenes[i].contains(":"))
						{
						ordenId = Util.parseInt(ordenes[i].split(":")[0]);
						turno = Util.parseInt(ordenes[i].split(":")[1]) + 1;
						}
					else
						{ ordenId = Util.parseInt(ordenes[i]); }
	
					if(ordenId > 0)
						{ OrdenTrabajo.cambiarTurnoNewlong(ordenId, turno, false); }
					}
				ciclo.recalcularFechas();
				}
			}
		else
			{
			// Leo los datos del ciclo.
			ciclo = new CicloNewlong();
			ciclo.setNewlongId(request.getParameter("newlong"));
			ciclo.setFechaHoraInicio(request.getParameter("fecha_inicio"));
			ciclo.setFechaHoraFin(request.getParameter("fecha_fin"));	
			ciclo.setCapacidad(Newlong.getCapacidad(ciclo.getNewlongId(), ciclo.getFechaHoraInicio(), ciclo.getFechaHoraFin()));
			ciclo.setBloqueado(request.getParameter("bloqueado") != null);
			ciclo.setPlanificado(request.getParameter("planificado") != null);
			
			// Leo los datos de las etapas.
			List<Map> etapas;
			String idsEtapas = request.getParameter("etapas");
	
			if(idsEtapas != null && idsEtapas.length() > 0)
				{
				List<FormatosPorNewlong> formatos = new LinkedList();
				
				String formatosString[] = idsEtapas.split(",");
				for(int i=0; i<formatosString.length; i++)
					{
					String formatoString[] = formatosString[i].split(":");
					int formatoId = Integer.parseInt(formatoString[0]);
					float proporcion = Float.parseFloat(formatoString[1]);
					int orden = Integer.parseInt(formatoString[2]) + 1;
					
					FormatosPorNewlong formato = new FormatosPorNewlong();
					formato.setNewlongId(ciclo.getNewlongId());
					formato.setFormatoId(formatoId);
					formato.setOrden(orden);
					formato.setProporcion(proporcion + "");
					formatos.add(formato);
					}
				
				etapas = EtapaNewlong.calcularFechasYCantidades(ciclo.getNewlongId(), ciclo.getFechaHoraInicio(), ciclo.getFechaHoraFin(), formatos, false);
				}
			else
				{ etapas = EtapaNewlong.calcularFechasYCantidades(ciclo.getNewlongId(), ciclo.getFechaHoraInicio(), ciclo.getFechaHoraFin(), false); }
			
			// Guardo los datos.
			ciclo.guardar(etapas);
			id = ciclo.getId();
			}
		}
	
	if(accion.compareTo("eliminar") == 0 && id > 0)
		{
		id = 0;
		ciclo.borrar();
		ciclo = null;
		out.println("<div id=\"dialog_error\" title=\"Aviso\">El ciclo se eliminó correctamente.</div>");
		}
	}catch(Exception e) { out.println("<div id=\"dialog_error\" title=\"Error\">"+e+"</div>");}

Date fechaInicioMin = null;
Date fechaFinMin = null;
if(ciclo != null)
	{
	CicloNewlong anterior = ciclo.getAnterior();
	fechaInicioMin = (anterior!=null)? anterior.getFechaHoraFin() : new Date();
	fechaFinMin = Newlong.calcularFechaFin(ciclo.getNewlongId(), ciclo.getFechaHoraInicio(), ciclo.getCantidadAsignada());
	}
%>

<script type="text/javascript" src="js/ListaOT.js"></script>
<script type="text/javascript" src="js/ListaEN.js"></script>
<script type="text/javascript" src="js/sp/ciclos-newlong-edit.jsp<%= (id>0)? ("?id=" + id) : "" %>"></script>
<link rel="stylesheet" type="text/css" href="css/lista-ordenes.css"/>

</head>
<body>

<%@ include file="jspf/header.jspf" %>

<h1><%= id>0? "Edición" : "Alta" %> de ciclos Newlong</h1>

<br/>

<center>
	
<form action="ciclos-newlong-edit.jsp" method="post" id="form_edicion">
	<input type="hidden" name="accion" value="guardar"/>
	<input type="hidden" name="etapas" value=""/>
	<input type="hidden" name="ids" value=""/>
	<input type="hidden" name="id" value="<%= (id>0)? id : "" %>"/>
		
	<table class="formulario">
		<tr>
			<td class="label">Newlong</td>
			<td class="input">
			<% if(ciclo == null) { %>
				<select name="newlong">
					<% {
					List<Newlong> newlongs = Newlong.listar();
					for(int i=0; i<newlongs.size(); i++)
						{ %>
						<option value="<%= newlongs.get(i).getId() %>"><%= newlongs.get(i).getDescripcion() %></option>
						<% }
					} %>
				</select>
			<% } else { %>
				<%= ciclo.getNewlong() %>
				<input type="hidden" name="newlong" value="<%= ciclo.getNewlongId() %>"/>
			<% } %>
			</td>
		</tr>
		<tr>
			<td class="label">Numero</td>
			<td class="input"><input type="text" name="numero" value="<%= (ciclo==null)? "" : ciclo.getNumero() %>" readonly="readonly"/></td>
		</tr>
		<tr>
			<td class="label">Fecha de inicio</td>
			<td class="input">
				<input type="text" name="fecha_inicio" class="fecha" value="<%= (ciclo!=null)? Util.format(ciclo.getFechaHoraInicio(), "dd/MM/yyyy HH:mm") : "" %>" />
				Mínima: <input type="text" name="fecha_inicio_min" value="<%= (fechaInicioMin!=null)? Util.format(fechaInicioMin, "dd/MM/yyyy HH:mm") : "" %>" readonly="readonly"/>
			</td>
		</tr>
		<tr>
			<td class="label">Fecha de fin</td>
			<td class="input">
				<input type="text" name="fecha_fin" class="fecha" value="<%= (ciclo!=null)? Util.format(ciclo.getFechaHoraFin(), "dd/MM/yyyy HH:mm") : "" %>" />
				Mínima: <input type="text" name="fecha_fin_min" value="<%= (fechaFinMin!=null)? Util.format(fechaFinMin, "dd/MM/yyyy HH:mm") : "" %>" readonly="readonly"/>
			</td>
		</tr>
		<tr>
			<td class="label">Bloquear</td>
			<td class="input"><input type="checkbox" name="bloqueado" value="true" <%= (ciclo!=null && ciclo.isBloqueado())? "checked=\"checked\"" : "" %>/></td>
		</tr>
		<tr>
			<td class="label">Planificar</td>
			<td class="input"><input type="checkbox" name="planificado" value="true" <%= (ciclo!=null && ciclo.isPlanificado())? "checked=\"checked\"" : "" %>/></td>
		</tr>
		<tr>
			<td class="label">Capacidad entre las fechas</td>
			<td class="input"><input type="text" name="capacidad" value="<%= (ciclo!=null)? Util.numero.format(ciclo.getCapacidad()) : "" %>" readonly="readonly"/></td>
		</tr>
		<% if(ciclo != null) { %>
		<tr>
			<td class="label">Bolsas a imprimir</td>
			<td class="input"><input type="text" name="bolsas" value="<%= (ciclo!=null)? Util.numero.format(ciclo.getCantidadAsignada()) : "" %>" readonly="readonly"/></td>
		</tr>
		<tr>
			<td class="label">Ordenes</td>
			<td id="td_planificacion_ordenes"></td>
		</tr>
		<% } else { %>
		<tr>
			<td class="label">Etapas</td>
			<td id="td_planificacion_etapas"></td>
		</tr>
		<% } %>
		<tr>
			<td colspan="2" align="center">
				<%
				String urlVolver = "ciclos-newlong.jsp";
				if(request.getParameter("volver_url") != null)
					{ urlVolver = request.getParameter("volver_url"); }
				else
					{ if(request.getHeader("referer") != null) urlVolver = request.getHeader("referer"); } 
				%>
				<input type="hidden" name="volver_url" value="<%= urlVolver %>"/>
				<button name="volver"><img src="icon/arrow_left.png" alt="" title="Volver"/> <span>Volver</span></button>
				<% if(Sesiones.tienePermiso(session, "ciclos_newlong", "write")) { %>
				<button name="eliminar"><img src="icon/stop.png" alt="" title="Eliminar"/> <span>Eliminar</span></button>
				<button name="guardar"><img src="icon/save.png" alt="" title="Guardar"/> <span>Guardar</span></button>
				<% } %>
			</td>				
		</tr>
	</table>
</form>

</center>

<%@ include file="jspf/footer.jspf" %>

</body>
</html>
